Systems and methods for remote data storage and processing for use with printers

ABSTRACT

A method of printing a document includes providing a document to a printer for printing; sending a portion of the document from the printer to an external service provider for temporary storage; and storing the portion of the document on the external service provider. The external service provider comprises a computing device or a server. The method further includes requesting that the portion of the document be sent from the external service provider to the printer for printing; sending the portion of the document from the external service provider to the printer; and printing the portion of the document using the printer.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit under 35 U.S.C. §119(e) of U.S.Provisional Patent Application Ser. No. 61/441,584 filed on Feb. 10,2011, which is incorporated herein by reference.

BACKGROUND

Low-cost printers typically ship with a relatively small amount of RAMand no persistent storage (either hard disk drive (HDD), solid statedisk (SSD), memory cards, or the like). That means that although manydocuments can be printed using streaming page description languages(PDLs) such as PostScript, Printer Control language (PCL), and someforms of the XML Paper specification (XPS), an especially complexdocument may fail to print because it would require more RAM than isavailable in the device. Furthermore, documents delivered innon-streaming PDLs (such as PDF and some forms of XPS) must be availableto the renderer in their entirety before they can be processed. Thus,they must be stored in the printer. If the printer only has RAM forstorage, that reduces the working memory available for processing, whichmeans that even simple documents may fail to print. Any file that'ssimply too large to be stored locally cannot be processed at all.

BRIEF SUMMARY

One embodiment is a method of printing a document. The method includesproviding a document to a printer for printing; sending a portion of thedocument from the printer to an external service provider for temporarystorage; and storing the portion of the document on the external serviceprovider. The external service provider comprises a computing device ora server. The method further includes requesting that the portion of thedocument be sent from the external service provider to the printer forprinting; sending the portion of the document from the external serviceprovider to the printer; and printing the portion of the document usingthe printer.

Another embodiment is a method of printing a document. The methodincludes directing a document to be sent to a printer for printing; and,prior to delivering the document to the printer, storing the document onan external service provider to provide temporary storage. The externalservice provider comprises a computing device or a server. The methodfurther includes notifying the printer of the availability of thedocument for printing; requesting, by the printer, a portion of thedocument to be sent to the printer; processing the portion of thedocument at the printer; repeating the requesting and processing stepsuntil the document is completely processed; and printing the documentusing the printer.

A further embodiment is a computer readable storage medium havingprocessor-executable instructions. The processor-executable instructionswhen installed onto a system enable the system to perform actions. Theactions include sending a portion of a document from a printer to anexternal service provider for temporary storage; requesting that theportion of the document be sent from the external service provider tothe printer for printing; processing the portion of the document at theprinter; and printing the portion of the document using the printer. Theexternal service provider comprises a computing device or a server.

Yet another embodiment is a computer readable storage medium havingprocessor-executable instructions. The processor-executable instructionswhen installed onto a system enable the system to perform actions. Theactions include directing a document to be sent to a printer forprinting; prior to delivering the document to the printer, storing thedocument on an external service provider to provide temporary storage;notifying the printer of the availability of the document for printing;requesting, by the printer, a portion of the document to be sent to theprinter; processing the portion of the document at the printer;repeating the requesting and processing steps until the document iscompletely processed; and printing the document using the printer. Theexternal service provider comprises a computing device or a server.

Another embodiment is a system for printing a document. The systemincludes a printer and an external service provider associated with theprinter and configured and arranged for communication with the printer.The external service provider comprises a computing device or a server.The printer includes a processor configured and arranged to send aportion of a document from the printer to the external service providerfor temporary storage, request that the portion of the document be sentfrom the external service provider to the printer for printing, processthe portion of the document at the printer, and print the portion of thedocument. The external service provider includes a processor configuredand arranged to store the portion of the document sent from the printeron the external service provider, and send the portion of the document,upon request, to the printer.

A further embodiment is a system for printing a document. The systemincludes a printer; and an external service provider associated with theprinter and configured and arranged for communication with the printer.The external service provider comprises a computing device or a server.The external service provider includes a processor configured andarranged to, prior to delivering the document to the printer, store thedocument on the external service provider to provide temporary storage,notify the printer of the availability of the document for printing, andsend, upon request by the printer, a portion of the document to theprinter. The printer includes a processor configured and arranged torequest a portion of the document to be sent to the printer, process theportion of the document at the printer, repeat the request and processsteps until the document is completely processed, and print the documentusing the printer.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments of the present invention aredescribed with reference to the following drawings. In the drawings,like reference numerals refer to like parts throughout the variousfigures unless otherwise specified.

For a better understanding of the present invention, reference will bemade to the following Detailed Description, which is to be read inassociation with the accompanying drawings, wherein:

FIG. 1 is a schematic representation of one embodiment of an environmentin which the invention can be employed;

FIG. 2 is a schematic flow chart of one embodiment of printing adocument using a printer and an external service provider, according tothe invention; and

FIG. 3 is a schematic flow chart of another embodiment of printing adocument using a printer and an external service provider, according tothe invention.

DETAILED DESCRIPTION

The methods, systems, and devices described herein may be embodied inmany different forms and should not be construed as limited to theembodiments set forth herein. Accordingly, the methods, systems, anddevices described herein may take the form of an entirely hardwareembodiment, an entirely software embodiment or an embodiment combiningsoftware and hardware aspects. The following detailed description is,therefore, not to be taken in a limiting sense. The methods describedherein can be performed using any type of printer, computing device, orserver that includes a processor. Suitable printers, computing devices,and servers typically include mass memory and typically include methodsfor communication with other devices including mobile devices. The massmemory illustrates a type of computer-readable media, namely computerstorage media. Computer storage media may include volatile, nonvolatile,removable, and non-removable media implemented in any method ortechnology for storage of information, such as computer readableinstructions, data structures, program modules, or other data. Examplesof computer storage media include RAM, ROM, EEPROM, flash memory orother memory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by aprinter, computing device, or server.

Methods of communication can include both wired and wireless (e.g., RF,optical, or infrared) communications methods and such methods provideanother type of computer readable media; namely communication media.Communication media typically embodies computer-readable instructions,data structures, program modules, or other data in a modulated datasignal such as a carrier wave, data signal, or other transport mechanismand includes any information delivery media. The terms “modulated datasignal,” and “carrier-wave signal” includes a signal that has one ormore of its characteristics set or changed in such a manner as to encodeinformation, instructions, data, and the like, in the signal. By way ofexample, communication media includes wired media such as twisted pair,coaxial cable, fiber optics, wave guides, and other wired media andwireless media such as acoustic, RF, infrared, and other wireless media.

FIG. 1 illustrates one embodiment of a network environment. It will beunderstood that the network environment can be a local area network, awide area network, or any combination thereof. It will also beunderstood that the network can include devices, other than thoseillustrated, coupled to the network and that there may be multipledevices of each type illustrated connected to the network. Theenvironment includes a network 100 to which is attached, either directlyor through other devices, one or more printers 102, one or morecomputing devices 104 (e.g., computers, workstations, and the like), andone or more servers 106. Other devices can optionally be attached to thenetwork such as cameras 108, cellular telephones 110, personal dataassistants (PDA's) 112, portable storage devices 114 (e.g., compactdiscs, DVDs, memory sticks, flash drives, or other optical or magneticstorage media), and the like. Any of these devices can be connecteddirectly to the network or via another device such as a computing device104, printer 102, or server 106.

To assist the printer with storage and processing of a document forprinting, a software client service is installed and runs on one or moreof the computing devices 104 or servers 106 connected to the printer 102through the network 100 (preferably, a local network) or directly, suchas through a USB cable. The computing device 104 or servers 106 thathave the software client service will be referred to as “serviceproviders.” The service listens for requests from printers to storeinformation. In at least some embodiments, the printer is associatedwith one or more service providers (e.g., computers or servers runningthe client service). As used herein and unless otherwise indicated, theterms “document”, “print job”, and “job” are synonymous. Reference to a“portion of the document” can include any part of the document itself,any part of an electronic file containing the document, or any part ofthe document that has been processed or partially processed. The“portion of the document” can include, but is not limited to, text,graphics and images, embedded fonts, a display list, metadata, rasterrepresentations of the document or a part of the document, other data inthe electronic file, and the like, or any combinations thereof.

The discovery of service providers and association may be performed inany of a variety of ways. For example, a printer connected directly to asingle computer or server, e.g. over a USB cable, can default to usingthe connected computer or server as a service provider. Alternatively oradditionally, a printer driver designed to drive a printer may includethe client service, so that the printer can identify the source of aprint job as a service provider and can request services from it on theback-channel to that computer. Alternatively or additionally, theprinter may require or accept manual configuration with the location ofa service provider (e.g. by keying in an IP address and a port number).Alternatively or additionally, service providers may issue occasionalbroadcast messages which identify them as such. The messages arereceived by printers on the same local area network and enable them tobuild a list of available service providers. Alternatively oradditionally, printers may issue occasional broadcast messages thatidentify themselves as such. The messages are received by serviceproviders and replied to in order to establish an association.Alternatively or additionally, a service may be used to discover andassociate printers with service providers.

A single service provider may be associated with one or more printers. Asingle printer may be associated with one or more service providers.

The printer may utilize the service at any time; however, the servicewill typically be most useful when the printer is not able to store orprocess the document that is to be printed. For example, the printer maydetermine to utilize the service if it determines that it does not havesufficient resources to process the document sent to it. As an example,the printer may determine to utilize the service if the printer findsitself in a situation where it does not have sufficient RAM to process ajob. The lack of sufficient RAM may even occur after the printerperforms its normal low memory actions (such as purging caches of datathat can be reconstructed).

FIG. 2 is a block diagram illustrating one method of utilizing theservice. In step 202, the printer determines whether it has an activeassociated service provider and, if not, the printer discovers, connectsor re-connects to a service provider (step 204). In step 206, theprinter sends to the service provider a chunk of data (e.g., a portionof a document) for storage with an associated unique identifier. A chunkof data is any collection of bytes that may represent text, a font, animage, a page, or any other data read from the incoming document orgenerated by the printer. It may also represent any combination of suchcollections of bytes, or a subset of a collection (e.g. datarepresenting a subset of an image, such as a tile, or one color channelof an image). The service provider stores the data in whatever form isconvenient for it. In at least some embodiments, storage will be inlocal RAM for performance reasons (RAM is much faster than hard disk),but data can be stored on a disk or other storage medium. It will berecognized that the printer may also send other data created by orinstalled on the printer system in response to the current or previousjobs.

As the printer processes the job it requests chunks of data back fromthe service provider as needed (step 208). The request includes theunique identifier associated with each chunk. The printer processes thechunks of data and prints the document (step 210). At the end of theprint job, or when the printer knows it no longer requires a storedchunk of data, it instructs the service provider to delete one or morespecified data chunks (step 212). Alternatively, the printer may requestthat all stored data chunks be deleted. Although FIG. 2 illustratessteps 206, 208, 210, and 212 in linear form, it will be recognized thatthese steps can be performed multiple times with different chunks ofdata and that processing the data, printing the data, and deleting thedata from the service provider may be performed in a variety ofdifferent temporal arrangements for the multiple chunks of data.

In some embodiments, the printer may choose to store chunks of data onthe service provider even if those chunks could be reconstructed fromother data that the printer holds, particularly if it would be slower toperform that reconstruction than it would be to send and retrieve thedata from the service provider. In some embodiments, the printer mayrequest a subset of a data chunk by including one or more byte rangeswith the request. The service provider will respond by delivering databetween the start and end offsets within the data chunk as defined byeach byte range. Byte range specifications may be relative to the startof the data chunk or to its end or any other suitable designation.

In some embodiments, the service provider may enable the printer torequest it to perform searches within a data chunk and to deliver dataon the basis of the results of such a search. An example of such usewould be for the printer to ask the service provider to search for thelast occurrence of a token ‘xref’ within a file and to deliver all databetween that and the end of the file to the printer. This would enablethe printer to obtain the main cross-reference table from a PDF file andsufficient information to determine whether that table is complete,whether the file is linearized, or how to start requesting additionaldata to complete the cross-reference table and to interpret the body ofthe file.

In some embodiments, particularly where the service provider isassociated with a channel through which the print job is supplied, theservice provider may proactively store data. FIG. 3 is a flow chartillustrating one embodiment of a process. In step 302, a document (i.e.,print job) is directed to a printer. Before the document is provided tothe printer, an external service provider stores the document (step304). In such cases the service provider will notify the printer of theavailability of the job (step 306) and optionally include one or more ofcharacteristics of the print job in the notification. Thecharacteristics provided may include, but are not limited to, thefile/job size (if known); the file/job name (if known); the format inwhich the service provider has received or plans to deliver the printjob (e.g. XPS, PDF, Word document etc; if the service provider includesthe capability of identifying the file type); the first few bytes of thefile/job (if the service provider does not include the capability ofidentifying the file type). The first few bytes of the file/job, incombination with a file name, will often be sufficient to enable theprinter to identify the file type, or at least to determine whatadditional data to request in order to be able to do so.

The service provider can store the entire job file as a single datachunk or in multiple data chunks. Having received notification of theavailability of a print job in this way the printer can then requestdata from the service provider as necessary to process the file (step308). Depending on the file size, file type, printer capabilities, etc,the printer may request the whole data chunk in one piece, or mayrequest a series of subsets of the data chunk as required to processthat job within the storage capabilities of the printer. The printerprocesses the portion of the job that is received (step 310) and therequest and processing is repeated until the processing of the print jobis completed (step 312) and the document (or at least a part of thedocument) is printed (step 314).

In some embodiments that proactively store print job data the serviceprovider may have the capability of recognizing the format of the storeddata and include specific code for at least some formats. Using theexample of searching within a data chunk given above, the serviceprovider may automatically search for the last xref in the whole-jobdata chunk and send data between that and the end of file as part of thejob characteristics delivered to the printer with a job notification.

In at least some embodiments the client service may be running on anon-local server or computing device, e.g. in the cloud, eitheron-premise, or outside the site on which the printer is situated. Insome embodiments the service provider may be extended to includeadditional capabilities to process data chunks as well as simply storingand returning them. As an example, the printer may provide a data chunkthat represents image data. When the service provider has additionalcapabilities the printer may inform it that the data chunk is imagedata, and provide additional information such as the color space, bitdepth, pixel dimensions, interleaving, orientation, compression used toencode the image data, or the like. The printer may then request thatthe service provider perform actions such as rotation, down- orsub-sampling, color space conversion, or the like on the data.

An extended service provider may also be useful in a situation evenwhere the printer has persistent storage (HDD, SSD etc) or sufficientRAM to fully process the job on the printer itself. In particular, theservice provider will typically have a more powerful central processingunit and more RAM (requiring less use of interim compression, etc).Thus, use of the service provider may accelerate job printing, even whenthe time taken to transfer data between the printer and service providerand the latency of commands and responses is taken into account.

An extended service provider could be supplied by a vendor as a clientapplication to run on any computer, as described above. Alternatively ifcould be supplied as a ‘black box’ designed for direct connection to aprinter, or to a network that includes one or more printers.

A printer may discover the availability of extended service providersthrough a number of routes including any of those described above fordiscovering a service provider. For example, there may be an assumptionin the printer code that any service provider identified will havespecific extended capabilities. Alternatively or additionally, discoverymay be by manual configuration of the printer as part of the associationwith a service provider. Alternatively or additionally, discovery may beby inclusion of information regarding service provider capabilities inany of the automated discovery mechanisms described above.

Using the methods and systems describe above, a low-cost printer can beable to print jobs that it would not otherwise be capable of doing. Theimpact on printer speed for jobs that do not require recourse to theservice provider will typically be negligible (if there is any at all).Print jobs that do make use of the service provider may be relativelyslow in at least some instances, but such print jobs might not beotherwise printable. Typically, the services provided by the serviceprovider can be achieved with only insignificant load on any additionalcomputers on the network or attached to the printer in any other way(unless an extended service provider is used, e.g. for remote imageprocessing). Use of an extended service provider may provide benefitssuch as an even greater proportion of supplied jobs can be printed andthe printing of large and complex jobs may be faster because the serviceprovider will typically have a more powerful CPU and more RAM (requiringless use of interim compression, etc).

It will be understood that each block of the flowchart illustrations inFIGS. 2 and 3, and combinations of blocks in the flowchart illustration,can be implemented by computer program instructions. These programinstructions may be provided to a processor to produce a machine, suchthat the instructions, which execute on the processor, create means forimplementing the actions specified in the flowchart block or blocks. Thecomputer program instructions may be executed by a processor to cause aseries of operational steps to be performed by the processor to producea computer implemented process such that the instructions, which executeon the processor, provide steps for implementing the actions specifiedin the flowchart block or blocks. The computer program instructions mayalso cause at least some of the operational steps shown in the blocks ofthe flowchart to be performed in parallel. Moreover, some of the stepsmay also be performed across more than one processor, such as mightarise in a multi-processor computer system. In addition, one or moreblocks or combinations of blocks in the flowchart illustration may alsobe performed concurrently with other blocks or combinations of blocks,or even in a different sequence than illustrated without departing fromthe scope or spirit of the invention.

Accordingly, blocks of the flowchart illustrations support combinationsof means for performing the specified actions, combinations of steps forperforming the specified actions and program instruction means forperforming the specified actions. It will also be understood that eachblock of the flowchart illustration, and combinations of blocks in theflowchart illustration, can be implemented by special purposehardware-based systems which perform the specified actions or steps, orcombinations of special purpose hardware and computer instructions.

The computer program instructions, or portions of the computer programinstructions, can be stored on any suitable computer-readable mediumincluding, but not limited to, RAM, ROM, EEPROM, flash memory or othermemory technology, CD-ROM, digital versatile disks (DVD) or otheroptical storage, magnetic cassettes, magnetic tape, magnetic diskstorage or other magnetic storage devices, or any other medium which canbe used to store the desired information and which can be accessed by acomputing device.

The above specification, examples and data provide a description of themanufacture and use of the composition of the invention. Since manyembodiments of the invention can be made without departing from thespirit and scope of the invention, the invention also resides in theclaims hereinafter appended.

1. A method of printing a document, the method comprising: providing adocument to a printer for printing; sending a portion of the documentfrom the printer to an external service provider for temporary storage;storing the portion of the document on the external service provider,wherein the external service provider comprises a computing device or aserver; requesting that the portion of the document be sent from theexternal service provider to the printer for printing; sending theportion of the document from the external service provider to theprinter; and printing at least part of the document using the printer.2. The method of claim 1, further comprising associating the printerwith the external service provider.
 3. The method of claim 1, whereinthe portion of the document sent to the external service providercomprises data associated with text, a font, an image, or a page of thedocument.
 4. The method of claim 1, further comprising providing anidentifier associated with the portion of the document sent by theprinter to the external service provider.
 5. The method of claim 1,further comprising requesting a search be performed on the portion ofthe document by the external service provider to identify a searchobject.
 6. The method of claim 1, wherein requesting that the portion ofthe document be sent from the external service provider comprisesrequesting that part of the portion of the document be sent from theexternal service provider to the printer, wherein the printer specifiesthe part to be sent.
 7. The method of claim 1, further comprisingrequesting, by the printer, deletion of the portion of the documentstored on the external service provider.
 8. The method of claim 1,wherein storing the portion of the document comprises storing theportion of the document in RAM of the external service provider.
 9. Themethod of claim 1, further comprising partially processing, forprinting, the portion of the document at the external service provider.10. A method of printing a document, the method comprising: directing adocument to be sent to a printer for printing; prior to delivering thedocument to the printer, storing the document on an external serviceprovider to provide temporary storage, wherein the external serviceprovider comprises a computing device or a server; notifying the printerof the availability of the document for printing; requesting, by theprinter, a portion of the document to be sent to the printer; processingthe portion of the document at the printer; repeating the requesting andprocessing steps until the document is completely processed; andprinting at least part of the document using the printer.
 11. The methodof claim 10, further comprising partially processing, for printing, atleast part of the document at the external service provider.
 12. Themethod of claim 10, wherein notifying the printer comprises sending oneor more characteristics of the document to the printer.
 13. A computerreadable storage medium having processor-executable instructions, theprocessor-executable instructions when installed onto a system enablethe system to perform actions, comprising: sending a portion of adocument from a printer to an external service provider for temporarystorage, wherein the external service provider comprises a computingdevice or a server; requesting that the portion of the document be sentfrom the external service provider to the printer for printing;processing the portion of the document at the printer; and printing atleast part of the document using the printer.
 14. A computer readablestorage medium having processor-executable instructions, theprocessor-executable instructions when installed onto a system enablethe system to perform actions, comprising: directing a document to besent to a printer for printing; prior to delivering the document to theprinter, storing the document on an external service provider to providetemporary storage, wherein the external service provider comprises acomputing device or a server; notifying the printer of the availabilityof the document for printing; requesting, by the printer, a portion ofthe document to be sent to the printer; processing the portion of thedocument at the printer; repeating the requesting and processing stepsuntil the document is completely processed; and printing at least partof the document using the printer.
 15. A system for printing a document,the system comprising: a printer; and an external service providerassociated with the printer and configured and arranged forcommunication with the printer, wherein the external service providercomprises a computing device or a server; wherein the printer comprisesa processor configured and arranged to send a portion of a document fromthe printer to the external service provider for temporary storage,request that the portion of the document be sent from the externalservice provider to the printer for printing, process the portion of thedocument at the printer, and print the portion of the document; andwherein the external service provider comprises a processor configuredand arranged to store the portion of the document sent from the printeron the external service provider, and send the portion of the document,upon request, to the printer.
 16. The system of claim 15, wherein theprocessor of the external service provider is further configured andarranged to at least partially processing a part of the document forprinting.
 17. The system of claim 15, wherein processor of the externalservice provider is further configured and arranged to search theportion of the document upon request by the printer.
 18. The system ofclaim 15, wherein the processor of the printer is configured andarranged to direct the external service provider to delete the portionof the document.
 19. A system for printing a document, the systemcomprising: a printer; and an external service provider associated withthe printer and configured and arranged for communication with theprinter, wherein the external service provider comprises a computingdevice or a server; wherein the external service provider comprises aprocessor configured and arranged to prior to delivering the document tothe printer, store the document on the external service provider toprovide temporary storage, notify the printer of the availability of thedocument for printing, and send, upon request by the printer, a portionof the document to the printer; and wherein the printer comprises aprocessor configured and arranged to request a portion of the documentto be sent to the printer, process the portion of the document at theprinter, repeat the request and process steps until the document iscompletely processed, and printing at least part of the document usingthe printer.
 20. The system of claim 19, wherein the processor of theexternal service provider is further configured and arranged to at leastpartially processing a part of the document for printing.